package cn.iocoder.yudao.module.system.service.a_pictures;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.a_pictures.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.a_pictures.PicturesDO;
import cn.iocoder.yudao.module.system.dal.dataobject.a_pictures.PicturesDOReq;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;


public interface PicturesService {
    /**
     * 新增图片
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String insertHybaseByImg(@Valid PicturesReqVO createReqVO);

    String save(PicturesBaseVO picturesDO);

    /**
     * 新增图片
     *
     * @param imageFile 创建信息
     * @return 编号
     */
    String upload(@Valid MultipartFile imageFile);


    /**
     * 获得图片分页
     *
     * @param pageReqVO 分页查询
     * @return 图片分页
     */

    PageResult<PicturesPageReqVO> getPage(PicturesPageReqVO pageReqVO);

    public PageResult<PicturesDO> selectPage(PicturesPageReqVO dto);


    /**
     * 获得图片分页
     *
     * @param pageReqVO 分页查询
     * @return 图片分页
     */

    PageResult<PicturesPageQukanReqVO> getPageQukan(PicturesPageQukanReqVO pageReqVO,Long userId);

    /**
     * 删除图片
     *
     * @param ids 编号
     */
    Boolean delete(String ids, String urls);

    public Boolean delete(Long[] ids);

    /**
     * 获得图片
     *
     * @param id 编号
     * @return 待办
     */
    PicturesReqVO get(String id);

    PicturesDO getInfo(String id);
    /**
     * 更新图片
     *
     * @param updateReqVO 更新信息
     */
    Boolean update(PicturesReqVO updateReqVO);

    /**
     * 查询本月新增图片数
     */
    long insertPicturesByDay();

    /**
     * 修改送审状态
     *
     * @param id
     * @param reviewStatus
     * @return
     */
    Boolean updateReview(String id, Integer reviewStatus);

    String DlIvrs(String url, MultipartEntityBuilder builder);

    PageResult<PicturesPageReqVO> getPageByFeature(PicturesPageReqVO param, MultipartFile file);

    /**
     * 更新推送资源库状态
     */
    Boolean updateShare(String id, String shareStatus);

    /**
     * 更新推送资源库状态
     */
    Boolean updatePush(String id, String pushStatus);

    /**
     * 图片下载计数器
     * @param id
     * @return
     */
    Object downloadCount(String id);

    /**
     * 获得图片下载地址
     * @param id
     * @return
     */
    String getImageDownloadPath(String id);
}
